//获取菜品数量，通过传入的菜品信息，来统计当前有多少个菜品
//缓存数据 H5 小程序
//{food.id:}
import Taro from '@tarojs/taro';
import Event from './events'

const foodKey = "taro_meituan";
let myEvent = new Event();//实例化一个事件管理器
export function getFoodCount(food) {
    let store = Taro.getStorageSync(foodKey);
    if (store && store[food.id]) {
        return store[food.id].num;
    } else {
        return 0;
    }
}

//设置菜品数量，当加菜或减菜时触发,num是由加减菜组件自身的state存储的 加减
//当减的数量等于0的 要删除菜品的数据结构
//当加菜时 发现数据结构中没有该菜品 新增数据结构
export function setFoodCount(food, num, type, callBack) {
    if (food) {
        let store = Taro.getStorageSync(foodKey);
        if (!store) store = {};
        if (type == "cut") {
            if (num == 1) {
                //菜品数据被删除
                if (store[food.id]) {
                    delete store[food.id]
                }
            } else {
                if (store[food.id]) {
                    store[food.id].num = num - 1;//数量-1，结构不变
                }
            }
            Taro.setStorageSync(foodKey, store);//进行缓存数据更新
            callBack && callBack()
        }
        if (type == "add") {
            if (store[food.id]) {//已经存在
                store[food.id].num = num + 1;//数量+1，结构不变
            } else {
                store[food.id] = {...food, num: 1};
            }
            Taro.setStorageSync(foodKey, store);//进行缓存数据更新
            callBack && callBack()
        }
    }
}


//获取所有的菜品数量和价格
export function getAllFoodInfo() {
    let allPrice = 0;//总价格
    let allNum = 0;//总数量
    let store = Taro.getStorageSync(foodKey);
    if (store) {
        Object.keys(store).map((key) => {
            if (store[key]) {
                allPrice += store[key].price * store[key].num;
                allNum += store[key].num;
            }
        })
    }
    return {allPrice, allNum}
}

//将事件管理器导出
export function getEvent() {
    return myEvent;
}

